1. Field of the Invention
The present invention relates to firmware updates and more particularly to timeout determination in microcontroller managed firmware updates.
2. Description of the Related Art
In electronic systems and computing, firmware is the combination of persistent memory and program code and data stored therein. Typical examples of devices which utilize firmware include embedded systems, computers, computer peripherals, mobile phones, and digital cameras. The firmware contained in these devices provides the initial control program for the device and is often referred to as a read only memory (ROM) basic input output system (BIOS). As such, firmware typically is stored within non-volatile memory devices such as ROM, erasable programmable ROM (EPROM), or flash memory. Though firmware often is never updated during the lifetime of the host device, in many instances firmware can be updated through a firmware update process.
Common reasons for updating firmware include bug fixes and the addition of new features and functionality to the host device. In the circumstance where the firmware is stored in a fixed medium such as a ROM, updating the firmware can require the physical removal and substituting of the ROM with a new ROM. In contrast, in the circumstance where the firmware is stored in an erasable and reprogrammable medium such as a FLASH or EEPROM storage medium, the storage medium can be reprogrammed utilizing a proprietary update procedure. Generally, the proprietary update procedure can be manually driven with an end user invoking a small utility program. More advanced procedures can be automated and managed remotely from over a computer communications network such as the global Internet.
Historically, firmware updating in a server environment typically had been managed by the central processing unit (CPU) of the server. More recent server architectures incorporate a microcontroller as the driving processor during the update process and the CPU directing the microcontroller to execute the updating of server firmware. In many instances, the microcontroller is included as part of a communications based component of the server such as the network interface card (NIC). Where the microcontroller is included as part of a different component of the server, the microcontroller can be tasked with performing different operations aside from driving the updating of firmware in the server. Thus, the responsiveness of the microcontroller to a request to update the firmware can vary depending upon the operational state of the microcontroller.
Commonly, to account for potential delays in the responsiveness of a microcontroller in updating the firmware, a “built in” time out can be hard coded into the logic for managing a request directed to the microcontroller to update of the firmware. Yet, while the time out value can be appropriate at the time of initially deploying the server, over time, the time out value can become less relevant—especially as added functionality in the microcontroller results in a higher, more intense state of operation of the microcontroller. In the past, the need to adjust the time out value has been addressed through a re-coding of the logic for managing the request directed to the microcontroller to update the firmware. The value to be assigned to the time out is determined by issuing a test request to the microcontroller and measuring the delay in receiving a response from the microcontroller.